<!DOCTYPE html>
<html lang="zh" xmlns:th="http://www.thymeleaf.org" >
<head>
    <th:block th:include="include :: header('一键入库单')" />
    <th:block th:include="include :: datetimepicker-css" />
</head>
<body class="white-bg">
<div class="wrapper wrapper-content animated fadeInRight ibox-content">
    <form class="form-horizontal m" id="form-inorder-onClickInstore" th:object="${inOrderVo.inOrder}">
        <input type="hidden" name="status" value="0">
        <h4 class="form-header h4">入库信息</h4>
        <div class="row">
            <div class="form-group">
                <label class="col-sm-3 control-label">入库单编号：</label>
                <div class="col-sm-8">
                    <div class="input-group">
                        <input id="orderCode"  name="orderCode" class="form-control" type="text" th:value="${inOrderNo}" required readonly>
                        <span class="input-group-addon"><a href="javascript:refreshOrder()"><i class="fa fa-refresh"></i>刷新单号</a></span>
                    </div>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="form-group">
                <label class="col-sm-3 control-label is-required">入库类型：</label>
                <div class="col-sm-8">
                    <select id="orderType" name="orderType" class="form-control" th:with="type=${@dict.getType('in_order_type')}" required>
                        <option value="">请选择</option>
                        <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}" th:field="*{orderType}"></option>
                    </select>
                </div>
            </div>
        </div>

        <div class="row">
            <div class="form-group">
                <label class="col-sm-3 control-label ">订单号：</label>
                <div class="col-sm-8">
                    <input name="orderName" class="form-control" type="text"  maxlength="32" >
                </div>
            </div>
        </div>

        <div class="row">
            <div class="form-group">
                <label class="col-sm-3 control-label ">来源订单：</label>
                <div class="col-sm-8">
                    <div class="input-group">
                        <input id="sourceOrderId" name="sourceOrderId" type="hidden" th:value="${inOrderVo.inOrder.sourceOrderId}">
                        <input id="sourceOrderNo" name="sourceOrderNo" class="form-control" type="text" th:value="${inOrderVo.inOrder.sourceOrderNo}"
                               onclick="selectOrder()" readonly>
                        <span class="input-group-addon"><i class="fa fa-search"></i></span>
                    </div>
                </div>
            </div>
        </div>

        <div class="row">
                <div class="form-group">
                    <label class="col-sm-3 control-label is-required">订单日期：</label>
                    <div class="col-sm-8">
                        <div class="input-group date">
                            <input id="orderDate" name="orderDate" class="form-control" placeholder="yyyy-MM-dd" type="text" th:value="${#dates.format(inOrderVo.inOrder.orderDate, 'yyyy-MM-dd')}" required>
                            <span class="input-group-addon"><i class="fa fa-calendar"></i></span>
                        </div>
                    </div>
                </div>
        </div>
        <div class="row">
            <div class="form-group">
                <label class="col-sm-3 control-label is-required">供应商：</label>
                <div class="col-sm-8">
                    <div class="input-group">
                        <input id="supplierId" name="supplierId" type="hidden"  th:value="${inOrderVo.inOrder.supplierId}">
                        <input id="supplierName" name="supplierName" class="form-control" type="text" onclick="selectSupplier()"  th:value="${inOrderVo.inOrder.supplierName}" readonly required>
                        <span class="input-group-addon"><i class="fa fa-search"></i></span>
                    </div>
                </div>
            </div>
        </div>

        <div class="row">
            <div class="form-group">
                <label class="col-sm-3 control-label is-required">入库仓库：</label>
                <div class="col-sm-8">
                    <div class="input-group">
                        <input id="warehouseId" name="warehouseId" type="hidden" th:value="${inOrderVo.inOrder.warehouseId}">
                        <input id="warehouseName" name="warehouseName" class="form-control" type="text" onclick="selectWarehouse()" th:value="${inOrderVo.inOrder.warehouseName}" readonly required>
                        <span class="input-group-addon"><i class="fa fa-search"></i></span>
                    </div>
                </div>
            </div>
        </div>
        <div class="row">
            <div class="form-group">
                <label class="col-sm-3 control-label">仓库库区：</label>
                <div class="col-sm-8">
                    <input id="reservoirName" name="reservoirName" type="hidden" >
                    <select id="reservoirId" name="reservoirId" class="form-control" onchange="onReservoir()" >
                        <option value="">请选择</option>
                    </select>
                </div>
            </div>
        </div>

        <div class="row">
            <div class="form-group">
                <label class="col-sm-3 control-label">备注：</label>
                <div class="col-sm-8">
                    <textarea name="remark" class="form-control"></textarea>
                </div>
            </div>
        </div>


    <h4 class="form-header h4">商品数据</h4>
    <div class="row">
        <div class="col-sm-12">
            <button type="button" class="btn btn-white btn-sm" onclick="addColumn()"><i class="fa fa-plus"> 增加</i></button>
            <button type="button" class="btn btn-white btn-sm" onclick="sub.delRow()"><i class="fa fa-minus"> 删除</i></button>
            <div class="col-sm-12 select-table table-striped">
                <table id="bootstrap-table"></table>
            </div>
        </div>
    </div>
    </form>

    <div class="row">
        <div class="col-sm-offset-5 col-sm-10">
            <button type="button" class="btn btn-sm btn-primary" onclick="submitHandler()"><i class="fa fa-check"></i>保 存</button>&nbsp;
            <button type="button" class="btn btn-sm btn-danger" onclick="closeItem()"><i class="fa fa-reply-all"></i>关 闭 </button>
        </div>
    </div>
</div>

<th:block th:include="include :: footer" />
<th:block th:include="include :: datetimepicker-js" />
<script th:inline="javascript">
    var prefix = ctx + "store/inorder"
    var goodsUnitDatas = [[${@dict.getType('product_unit')}]];//商品单位
    var warehouseId = [[${inOrderVo.inOrder.warehouseId}]];//仓库主键

    $("#form-inorder-onClickInstore").validate({
        focusCleanup: true
    });

    function submitHandler() {
        if ($.validate.form()) {
            $.operate.saveTabSelf(prefix + "/add", $('#form-inorder-onClickInstore').serializeArray(),function(result){
                if (result.code == web_status.SUCCESS) {
                    var preViewUrl = ctx + 'store/inorder';
                    $.modal.openFull("入库单", preViewUrl);
                }else{
                    $.modal.alertError(result.msg);
                }
            });
        }
    }

    function  refreshOrder() {
        var config = {
            url: prefix + "/getOrderNo",
            type: "GET",
            beforeSend: function () {
                $.modal.loading("正在处理中，请稍后...");
            },
            success: function (result) {
                if (result.code == web_status.SUCCESS) {
                    $("#orderCode").val(result.data)
                } else {
                    $.modal.alertError(result.msg);
                }
                $.modal.closeLoading();
            }

        };
        $.ajax(config);
    }
    //日期
    $("input[name='orderDate']").datetimepicker({
        format: "yyyy-mm-dd",
        minView: "month",
        autoclose: true,
        initialDate: new Date()
    });
    $(function(){
        //初始化仓库设置
        getReservoirList(warehouseId);
    })
    $(function() {
        // 初始化数据, 可以由后台传过来
        var data = [[${inOrderVo.items}]];
        var options = {
            data: data,
            pagination: false,
            showSearch: false,
            showRefresh: false,
            showToggle: false,
            showColumns: false,
            sidePagination: "client",
            // queryParams: queryParams,
            // onLoadSuccess: onLoadSuccess,//所有数据被加载成功触发
            columns: [{
                checkbox: true
            },
                {
                    field: 'index',
                    align: 'center',
                    title: "序号",
                    formatter: function (value, row, index) {
                        var columnIndex = $.common.sprintf("<input type='hidden' name='index' value='%s'>", $.table.serialNumber(index));
                        return columnIndex + $.table.serialNumber(index);
                    }
                },
                {
                    field: 'id',
                    align: 'center',
                    title: 'id',
                    visible: false
                },
                {
                    field: 'batchNo',
                    align: 'center',
                    title: '批次',
                    formatter: function(value, row, index) {
                        var html = $.common.sprintf("<input class='form-control' type='text' name='items[%s].batchNo' value='%s' >", index, value);
                        return html;
                    }
                },
                {
                    field: 'goodsName',
                    align: 'center',
                    title: '商品名称',
                    formatter: function(value, row, index) {
                        var html = $.common.sprintf("<input class='form-control' type='text' name='items[%s].goodsName' value='%s' readonly required>", index, value);
                        var goodsId = $.common.sprintf("<input type='hidden' name='items[%s].goodsId' value='%s'>", index, row.goodsId);//商品id 隐藏域
                        var goodsCode = $.common.sprintf("<input type='hidden' name='items[%s].goodsCode' value='%s'>", index, row.goodsCode);//商品code 隐藏域
                        return html+goodsId+goodsCode;
                    },
                    events: onclickEvent
                },
                {
                    field: 'planNumber',
                    align: 'center',
                    title: '应入库数量',
                    formatter: function(value, row, index) {
                        var html = '<input class="form-control" type="number" step="0.01" name="items['+index+'].planNumber" value="'+value+'" maxlength="6"  readonly>';
                        return html;
                    },
                },
                {
                    field: 'actualNumber',
                    align: 'center',
                    title: '入库数量',
                    formatter: function(value, row, index) {
                        var html = '<input class="form-control" type="number" step="0.01" name="items['+index+'].actualNumber" value="'+value+'" maxlength="6"  required>';
                        return html;
                    },
                },
                {
                    field: 'goodsUnitDesc',
                    align: 'center',
                    title: '单位',
                    formatter: function(value, row, index) {
                        var html = $.common.sprintf("<input class='form-control' type='text' name='items[%s].goodsUnitDesc' value='%s' readonly>", index, value);
                        var goodsUnit = $.common.sprintf("<input type='hidden' name='items[%s].goodsUnit' value='%s'>", index, row.goodsUnit);//商品unit
                        return html+goodsUnit;
                    }
                },
                {
                    field: 'packageNumber',
                    align: 'center',
                    title: '包装数量',
                    formatter: function(value, row, index) {
                        var html = '<input class="form-control" type="number" name="items['+index+'].packageNumber" value="'+value+'" maxlength="6" >';
                        return html;
                    },
                },
                {
                    field: 'packageUnit',
                    align: 'center',
                    title: '包装规格',
                    formatter: function(value, row, index) {
                        var html = $.common.sprintf("<input class='form-control' type='text' name='items[%s].packageUnit' value='%s' >", index, value);
                        return html;
                    }
                },
                {
                    field: 'remark',
                    align: 'center',
                    title: '要求',
                    formatter: function(value, row, index) {
                        var html = '<textarea class="form-control"  name="items['+index+'].remark" maxlength="200">'+value+'</textarea>';
                        return html;
                    }
                }
            ]
        };
        $.table.init(options);
    });

    //新增table行
    function addColumn() {
        var row = {
            id: "",
            goodsId: "",
            goodsName: "",
            goodsUnit: "",
            goodsUnitDesc:"",
            planNumber: "",
            actualNumber: "",
            batchNo: "",
            packageNumber: "",
            packageUnit: "",
            remark: ""
        }
       sub.addRow(row);
    }

    function selectOrder(){
       var orderType = $("#orderType").val();
       if($.common.isEmpty(orderType)){
            $.modal.alertWarning("请先选择【入库类型】");
       }else{
            if(orderType=="1"){//生产入库
                selectProductOrder()
            }
            if(orderType=="2"){//采购入库
                selectPurchOrder();
            }
       }
    }


    /* 选择生产订单 */
    var productPrefix = ctx + "order/productorder"
    function selectProductOrder() {
        var url = productPrefix + '/selectProductOrder';
        var options = {
            title: '选择生产订单',
            url: url,
            callBack: doSubmitProductOrder
        };
        $.modal.openOptions(options);
    }

    function doSubmitProductOrder(index, layero){
        var iframeWin = layero.find("iframe")[0].contentWindow.$.table;
        var rows = iframeWin.selectFirstColumns();//调用子页面的方法 获取ID
        if (rows.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }
        var id = rows.join();
        $('#sourceOrderId').val(id);
        var orderNo=iframeWin.selectColumns("orderNo").join();//调用子页面的方法 获取ID
        $('#sourceOrderNo').val(orderNo);

        //重置子表
        sub.removeAllRow();
        productOrder(id);

        $.modal.close(index);
    }

    //选择生产单填充子表信息
    function productOrder(id) {
        var data = {"id": id};
        var config = {
            url: productPrefix + "/ajaxData",
            type: "post",
            dataType: "json",
            data: data,
            beforeSend: function () {
                $.modal.loading("正在处理中，请稍后...");
            },
            success: function (result) {
                if (result.code == web_status.SUCCESS) {
                    var value = result.data;
                    var doNumber = numSub(value.goodsNum,value.inNum);
                    var row = {
                        id: "",
                        goodsId: value.goodsId,
                        goodsCode: value.goodsCode,
                        goodsName: value.goodsName,
                        goodsUnit: value.goodsUnit,
                        goodsUnitDesc: value.goodsUnitDesc,
                        planNumber: doNumber,
                        actualNumber: doNumber,
                        batchNo: value.batchNo,
                        packageNumber: "",
                        packageUnit: "",
                        remark: ""
                    }
                    sub.addRow(row);
                } else {
                    $.modal.alertError(result.msg);
                }
                $.modal.closeLoading();
            }

        };
        $.ajax(config);
    };

    /* 选择采购订单 */
    var purchOrderPrefix = ctx + "order/purchorder"
    function selectPurchOrder() {
        var url = purchOrderPrefix + '/selectPurchOrder';
        var options = {
            title: '选择采购订单',
            url: url,
            callBack: doSubmitPurchOrder
        };
        $.modal.openOptions(options);
    }

    function doSubmitPurchOrder(index, layero){
        var iframeWin = layero.find("iframe")[0].contentWindow.$.table;
        var rows = iframeWin.selectFirstColumns();//调用子页面的方法 获取ID
        if (rows.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }
        $('#sourceOrderId').val(rows.join())
        var orderNo=iframeWin.selectColumns("orderNo").join();//调用子页面的方法 获取ID
        $('#sourceOrderNo').val(orderNo)
        var supplierId=iframeWin.selectColumns("supplierId").join();//调用子页面的方法 获取ID
        $('#supplierId').val(supplierId)
        var supplierName=iframeWin.selectColumns("supplierName").join();//调用子页面的方法 获取ID
        $('#supplierName').val(supplierName)
        var warehouseId=iframeWin.selectColumns("warehouseId").join();//调用子页面的方法 获取ID
        $('#warehouseId').val(warehouseId)
        var warehouseName=iframeWin.selectColumns("warehouseName").join();//调用子页面的方法 获取ID
        $('#warehouseName').val(warehouseName)
        //调用库区
        getReservoirList(warehouseId)
        //重置子表
        sub.removeAllRow();
        purchOrder(rows.join());

        $.modal.close(index);
    }

    //选择采购单，填充子表信息
    function purchOrder(mainId) {
        var data = {"mainId": mainId};
        var config = {
            url: purchOrderPrefix + "/item/ajaxList",
            type: "post",
            dataType: "json",
            data: data,
            beforeSend: function () {
                $.modal.loading("正在处理中，请稍后...");
            },
            success: function (result) {
                if (result.code == web_status.SUCCESS) {
                    $.each(result.data, function (index, value) {
                        var doNumber = numSub(value.planNumber,value.inNumber);
                        var row = {
                            id: "",
                            goodsId: value.goodsId,
                            goodsCode: value.goodsCode,
                            goodsName: value.goodsName,
                            goodsUnit: value.goodsUnit,
                            goodsUnitDesc: value.goodsUnitDesc,
                            planNumber: doNumber,
                            actualNumber: doNumber,
                            batchNo: "",
                            packageNumber: "",
                            packageUnit: "",
                            remark: ""
                        }
                        sub.addRow(row);
                    });
                } else {
                    $.modal.alertError(result.msg);
                }
                $.modal.closeLoading();
            }

        };
        $.ajax(config);
    };


    /* 选择供应商 */
    var supplierPrefix = ctx + "basic/supplier"
    function selectSupplier() {
        var url = supplierPrefix + '/selectSupplier';
        var options = {
            title: '选择供应商',
            url: url,
            callBack: doSubmitSupplier
        };
        $.modal.openOptions(options);
    }
    function doSubmitSupplier(index, layero){
        var iframeWin = layero.find("iframe")[0].contentWindow.$.table;
        var rows = iframeWin.selectFirstColumns();//调用子页面的方法 获取ID
        if (rows.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }
        $('#supplierId').val(rows.join())
        var supplierName=iframeWin.selectColumns("supplierName").join();//调用子页面的方法 获取ID
        $('#supplierName').val(supplierName)

        $.modal.close(index);
    }

    /* 选择仓库 */
    var warehousePrefix = ctx + "basic/warehouse"
    function selectWarehouse() {
        var url = warehousePrefix + '/selectWarehouse';
        var options = {
            title: '选择仓库',
            url: url,
            callBack: doSubmitWarehouse
        };
        $.modal.openOptions(options);
    }
    function doSubmitWarehouse(index, layero){
        var iframeWin = layero.find("iframe")[0].contentWindow.$.table;
        var rows = iframeWin.selectFirstColumns();//调用子页面的方法 获取ID
        if (rows.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }
        $('#warehouseId').val(rows.join())
        var warehouseName=iframeWin.selectColumns("warehouseName").join();
        $('#warehouseName').val(warehouseName)
        //调用库区
        getReservoirList(rows.join())

        $.modal.close(index);
    }


    /**
     * 获取仓库库区下拉框信息
     */
    var reservoirPrefix = ctx + "basic/reservoir"
    function getReservoirList(warehouseId){
        if($.common.isEmpty(warehouseId)){
            return;
        }
        var data = {"warehouseId":warehouseId};
        var config = {
            url: reservoirPrefix + "/ajaxList",
            type: "post",
            dataType: "json",
            data: data,
            beforeSend: function () {
                $.modal.loading("正在处理中，请稍后...");
            },
            success: function(result) {
                if (result.code == web_status.SUCCESS) {
                    var str="<option value=''>请选择</option>";
                    $.each( result.data,function(index,value){
                        str+='<option value="'+value.id+'">'+value.reservoirName+'</option>';
                    });
                    $('#reservoirId').empty();
                    $('#reservoirId').append(str);
                }else {
                    $.modal.alertError(result.msg);
                }
                $.modal.closeLoading();
            }

        };
        $.ajax(config)
    }
    function onReservoir() {
        var id = $("#reservoirId option:selected").val()
        if(id==undefined || id==''){
            $('#reservoirId').val("");
            $('#reservoirName').val("");
        }else{
            $('#reservoirName').val($("#reservoirId option:selected").text());
        }
    }


    /* 选择商品 */
    var goodsPrefix = ctx + "basic/goods"
    function  selectShopGoods() {// index:所在行的索引
        var url = goodsPrefix + '/selectGoods';
        var options = {
            title: '选择商品',
            url: url,
            callBack: doSubmitGoods
        };
        $.modal.openOptions(options);
    }
    var orderSeedId;//子表ID
    function doSubmitGoods(index, layero){
        var iframeWin = layero.find("iframe")[0].contentWindow.$.table;
        var rows = iframeWin.selectFirstColumns();//调用子页面的方法 获取ID
        if (rows.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }

        var goodsId=iframeWin.selectColumns("id").join();//调用子页面的方法 获取ID
        var goodsCode=iframeWin.selectColumns("goodsCode").join();//调用子页面的方法 获取ID
        var goodsName=iframeWin.selectColumns("goodsName").join();//调用子页面的方法 获取ID
        var goodsUnit=iframeWin.selectColumns("goodsUnit").join();//调用子页面的方法 获取ID
        var planNumber=iframeWin.selectColumns("planNumber").join();//调用子页面的方法 获取ID
        var goodsUnitDesc = "";//单位描述
        $.each(goodsUnitDatas,function(index,obj){  //index:索引obj:循环的每个元素
            if(obj.dictValue == goodsUnit){
                goodsUnitDesc= obj.dictLabel;
            }
        });
        var data = $("#" + table.options.id).bootstrapTable('getData');
        var flag=0;
        $.each(data,function(index,obj) {  //index:索引obj:循环的每个元素
            if(obj.goodsId ==  goodsId){
                flag=1;
                return false; //跳出循环
            }
        });
        if(flag == 1){$.modal.alertWarning("商品已在清单中!"); return;}

        $.modal.close(index);


        var _data = new Object();//某行数据
        _data.goodsId = goodsId;
        _data.goodsCode = goodsCode;
        _data.goodsName = goodsName;
        _data.goodsUnit = goodsUnit;
        _data.goodsUnitDesc = goodsUnitDesc;
        _data.planNumber = planNumber;
        _data.actualNumber = planNumber;
        $("#" + table.options.id).bootstrapTable("updateRow",{index : orderSeedId,row : _data});
    }

    /**
     * 选中商品事件
     * */
    window.onclickEvent = {
        'click .form-control': function (e, value, row, index) {
            orderSeedId = index
            selectShopGoods();
        }
    };


</script>

</body>
</html>